package main

// 包的导入使用到环境变量
import (
	// "/byte/byte"
	"fmt"
)

func test2(num int,testFunc func(int))  {
	fmt.Println("test2",num)
}

// 如果返回值类型就是一个的话，那么()是可以忽略不写的
func cal(num1 int, num2 int) (int, int) {
	var sum int = 0
	sum += num1
	sum += num2
	var result int = num1 - num2
	return sum, result
}

func exchangeNum(num1 int, num2 int) {
	var t int
	t = num1
	num1 = num2
	num2 = t
}
// 定义一个函数：函数的参数为：可变参数 ... 参数的数量可变
func test (a int){
	// 函数内部处理可变参数的时候，可变参数当做切片来处理 
	for i := 0; i < 18; i++ {
		
	}
	
}
func main() {
	res, _ := cal(22, 90)
	fmt.Println("res = ", res)
	var num1 int = 10
	var num2 int = 20
	exchangeNum(num1, num2)
	// var num3 int = 30
	// var num4 int = 40

	// fmt.Println("sum1 = ", sum1)
	b := test2
	test2(1,test) 
	fmt.Println("b的类型是：%T,test函数的类型是：%T \n",b,test2)


}

type myFunc func(int)
func test03(num1 int,num2 float32,testFunc myFunc)  {
	
}
// 求两个数的和，差
func test04(num1 int,num2 int)(int,int){
	rusult1 := num1 + num2
	rusult2 := num1 - num2
	return rusult1,rusult2
}
// 传统写法要求值和返回值的类型要一致